package com.zhangtai.modules.entity.transfer;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

	

/**
 * 
 *
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2020-07-29 17:23:37
 */
@Data
@TableName("tb_transfer_info")
public class TransferInfoEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 调动Id
	 */
	@TableId(value = "transfer_id", type = IdType.AUTO)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long transferId;

			/**
		 * id
		 */
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long oid;
			/**
		 * 申请人
		 */
			private String applyUserName;
		/**
		 * 申请人工号
		 */
		private String applyCode;
			/**
		 * 申请日期
		 */
			private Date applyDate;
			/**
		 * 员工工号
		 */
			private String userCode;

			/**
		 * 调动员工姓名
		 */
			private String name;
			/**
		 * 调动类型，0:平调，1：升职调，2：降职调
		 */
			private Integer transferType;
			/**
		 * 调动方式，0:部门内部调转，1：单位内部门之间调动，2：跨单位之间调动
		 */
			private Integer type;
			/**
		 * 调转前部门
		 */
			private String beforeDepartment;
			/**
		 * 调转前岗位
		 */
			private String beforeJob;
			/**
		 * 拟调入部门
		 */
			private String afterDepartment;
			/**
		 * 拟调入岗位
		 */
			private String afterJob;
			/**
		 * 调动前职级
		 */
			private String beforeJobLevel;
			/**
		 * 调动后职级
		 */
			private String afterJobLevel;
			/**
		 * 0:正常，1：删除
		 */
			private Integer isDelete;
			/**
		 * 调动原因
		 */
			private String reason;
			/**
		 * 0:未提交，1：提交审bpm审核中，2：审核通过，3驳回
		 */
			private Integer auditStatus;
			/**
		 * 调动后部门id
		 */
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long afterDepartmentId;
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long beforeDepartmentId;
	/**
	 * 调动前职位id
	 */
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long beforeJobId;
			/**
		 * 调动后职位id
		 */
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long afterJobId;
			/**
		 * 调动后职级id
		 */
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long afterJobLevelId;
			/**
		 * 
		 */
			private Date createTime;

			/**
		 * 流程类型，0：新员工录用，1：员工调转
		 */
			private Integer flowType;
			/**
		 * 流程id
		 */
			private String flowId;
			/**
		 * 薪资组id
		 */
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long salaryGroupId;
			/**
		 * 是否分配了薪资组，0：未分配，1：已分配
		 */
			private Integer isDistribute;
			/**
		 * 调转前部门
		 */
			private String beforeOrg;

	/**
	 * 调转前部门id
	 */
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
		private Long beforeOrgId;
			/**
		 * 调转后部门
		 */
			private String afterOrg;
			/**
		 * 调转后部门id
		 */
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long afterOrgId;
			/**
		 * 调动前职级id
		 */
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long beforeJobLevelId;
			/**
		 * 调动后职级类别
		 */
			private Integer afterJobLevelType;
			/**
		 * 调动前职级类别
		 */
			private Integer beforeJobLevelType;

	/**
	 * 借调开始时间
	 */
	private Date beginTransferDate;

	/**
	 * 借调结束时间
	 */
	private Date endTransferDate;


	private Date realHireDate;

	/**
	 * bmp审核链接
	 */
	@ApiModelProperty(value="bmp审核链接")
	private String checkUrl;

	/**
	 * 消息推送状态： 0未推送 1已推送
	 */
	@ApiModelProperty(value="消息推送状态： 0未推送 1已推送")
	private Integer isRemind;

	@ApiModelProperty(value="处理状态 0未处理 1已处理",required = false)
	private Integer dealStatus;

	@ApiModelProperty(value="确认入职状态 0：未入职 1：已入职",required = false)
	private Integer isHireDone;
	@ApiModelProperty(value="入职时间",required = false)
	private Date hireDate;

	private String fileUrl;
	@ApiModelProperty(value="调动前体系id",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long beforeSystemId;
	@ApiModelProperty(value="调动后体系id",required = false)
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long afterSystemId;
	@ApiModelProperty(value="调动天数")
	private String transferDays;
	@ApiModelProperty(value="是否需要重新签署 0：不需要 1：需要")
	private Integer isAfreshContract;

	/**
	 * 原补贴结束时间
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED,insertStrategy = FieldStrategy.IGNORED )
	@ApiModelProperty(value="原补贴结束时间")
	private Date beforeSubsidyEnd;
	/**
	 * 原补贴金额
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED,insertStrategy = FieldStrategy.IGNORED )
	@ApiModelProperty(value="原补贴金额")
	private BigDecimal beforeSubsidy;
	/**
	 * 原补贴id
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED,insertStrategy = FieldStrategy.IGNORED )
	@ApiModelProperty(value="原补贴id")
	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long beforeSubsidyId;
	/**
	 * 调整后补贴
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED,insertStrategy = FieldStrategy.IGNORED )
	@ApiModelProperty(value="调整后补贴")
	private BigDecimal afterSubsidy;
	/**
	 * 调整后补贴开始时间
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED,insertStrategy = FieldStrategy.IGNORED )
	@ApiModelProperty(value="调整后补贴开始时间")
	private Date afterSubsidyStart;
	/**
	 * 调整后补贴结束时间
	 */
	@TableField(updateStrategy = FieldStrategy.IGNORED,insertStrategy = FieldStrategy.IGNORED )
	@ApiModelProperty(value="调整后补贴结束时间")
	private Date afterSubsidyEnd;

}
